using namespace std;
#include<bits/stdc++.h>
int n,m,l,v,chai[3010];
vector<int>zhao[3010];
float light[3010],s;
struct che{
    int d,su,a;
}car[3010];
float suan(int chu,int a,int mo){
    return (mo*mo-chu*chu)/2/a;
}
int main(){
//    freopen("detect.in","r",stdin);
//    freopen("detect.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&l,&v);
    for(int i=1;i<=n;i++){
        scanf("%d%d%d",&car[i].d,&car[i].su,&car[i].a);
    }
    for(int i=1;i<=m;i++){
        scanf("%d",light[i]);
    }
    sort(light+1,light+n);
    for(int i=1;i<=n;i++){
        if(car[i].a<0){
            if(car[i].su>v){
                s=suan(car[i].su,car[i].a,v);
                for(int j=m;j>=1;j--){
                    if(light[j]<car[i].d+s && light[j]>=car[i].d){
                        zhao[i].push_back(j);
                        chai[j]++;
                    }
                }
            }
        }
        if(car[i].a==0){
            if(car[i].su>v){
                for(int j=m;j>=1;j--){
                    if(light[j]>=car[i].d){
                        zhao[i].push_back(j);
                        chai[j]++;
                    }else break;
                }
            }
        }
        if(car[i].a>0){
            if(car[i].su>v){
                for(int j=m;j>=1;j--){
                    if(light[j]>=car[i].d){
                        zhao[i].push_back(j);
                        chai[j]++;
                    }else break;
                }
            }else{
                s=suan(car[i].su,car[i].a,v);
                for(int j=m;j>=1;j--){
                    if(light[j]>car[i].d+s){
                        zhao[i].push_back(j);
                        chai[j]++;
                    }else break;
                }
            }
        }
    }
    for(int i=0;i<=n;i++){
        for(int j=1;j<=m;i++){
            if(light[j]==i){
                for(int k=1;k<=n;k++){
                    zhao[i]
                }
            }
        }
    }
    return 0;
}
